表单验证

表单验证又分为前台验证和后台验证,在前台我们使用的jQuery 的validate插件,这个插件的好处就是绑定了一 系列的验证,同时还能自己去编写,非常容易使用。

安装

1)可以把jQuery validate文件下载到本地,然后再HTML中引用

<script src='../jquery.js' type="text/javascript"/>
<script src='../jquery.validate.js' type="text/javascript"/>

2)直接在HTML中引用CDN

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.js' type="text/javascript"/>

使用

我们先来看一段代码

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.js' type="text/javascript" ></script>
<%= form_for :user,url:users_path,:html=>{:id=>"form"} do |f| %>
<div>用户名<%= f.text_field:name %></div>
<div>密码  <%= f.password_field:password  %></div>
<div>邮箱  <%= f.text_field:mail  %></div>
<%=f.submit "signup"%>
<% end %>
<style>
input.error { border: 1px solid red; }
label.error {
background:url("./demo/images/unchecked.gif") no-repeat 0px 0px;
           padding-left: 16px;
           padding-bottom: 2px;
           font-weight: bold;
color: #EA5200;
}
label.checked {
  background:url("./demo/images/checked.gif") no-repeat 0px 0px;
}
</style>
<script>
$("#form").validate({
  rules:{
    "user[name]":"required",
    "user[password]":{
    "required":true,
    "rangelength":[6,10]
    },
    "user[mail]":"email"
  },
  messages:{
    "user[name]":"请输入用户名",
    "user[password]":{
    "required":"请输入密码",
    "rangelength":"密码在6-10位"
    },
    "user[mail]":"请注意邮箱格式"
  }
});
</script>

由于插件的默认错误信息是英语,所以在这里我们选择自己在js文件中写检验规则。 form就是你要检验的表单,rules中是检验规则,而messages中是错误信息,rules和messages通过name属性来控制的,id和class不可用。

*本章末有默认检验规则

常见问题

错误信息显示位置

默认是显示在该元素后面,修改的话使用下边这种方法

errorPlacement: function(error, element) {
    error.appendTo(element.parent());
    }

更改错误信息的样式

我们可以自定义错误信息的样式

input.error { border: 1px solid red; }
label.error {
  background:url("./demo/images/unchecked.gif") no-repeat 0px 0px;
  padding-left: 16px;
  padding-bottom: 2px;
  font-weight: bold;
  color: #EA5200;
}
label.checked {
  background:url("./demo/images/checked.gif") no-repeat 0px 0px;
}

添加自定义验证规则

写在additional-methods.js文件中(没有就自己创建并引用)或 jquery.validate.js文件中。

addMethod:name, method, message
// 邮政编码验证
jQuery.validator.addMethod("isZipCode", function(value, element) {
    var tel = /^[0-9]{6}$/;
    return this.optional(element) || (tel.test(value));
}, "请正确填写您的邮政编码");

默认检验规则

序号 规则 描述
1 required:true 必须输入的字段。
2 remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值。
3 email:true 必须输入正确格式的电子邮件。
4 url:true 必须输入正确格式的网址。
5 date:true 必须输入正确格式的日期。日期校验 ie6 出错,慎用。
6 dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。
7 number:true 必须输入合法的数字(负数,小数)。
8 digits:true 必须输入整数。
9 creditcard: 必须输入合法的信用卡号。
10 equalTo:"#field" 输入值必须和 #field 相同。
11 accept: 输入拥有合法后缀名的字符串(上传文件的后缀)。
12 maxlength:5 输入长度最多是 5 的字符串(汉字算一个字符)。
13 minlength:10 输入长度最小是 10 的字符串(汉字算一个字符)。
14 rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串(汉字算一个字符)。
15 range:[5,10] 输入值必须介于 5 和 10 之间。
16 max:5 输入值不能大于 5。
17 min:10 输入值不能小于 10。

results matching ""

    No results matching ""